<?php
	/**
	 * 异常类
	 * error_code:
	 * 1：不存在的模块
	 * 2：不存在的控制器
	 * 3：不存在的动作
	 * 4：ID超出范围
	 * 5：不存在的配置文件
	 * 6：模板文件不存在
	 * 7：调用未定义的属性
	 * 8：给一个未定义的属性赋值
	 * 9：在一个未定义的属性上执行UNSET
	 * 10:调用一个对象中不存在的方法
	 * @author ping
	 *
	 */
	class throw_exception
	{
		public static function process($e)
		{
			header('Cache-Control: no-cache');
		    header('HTTP/1.0 404 Not Found', TRUE, 404);
		    echo "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />";
		    echo "<h1>404 - Not Found, errcode: {$e->getCode()}</h1><br /><br />";

		    self::print_debug_info($e);
		    exit;
		}

		public static function print_debug_info($e)
		{
			if (config::get()->config->debug)
			{
				$err_info = $e->getTrace();
				echo '<font style="color:red">此信息只有开发者模式下才显示，如果你的系统正在生产环境，请联系程序员屏蔽此不安全信息:</font><br /><br />';
				echo '异常消息：' . $e->getMessage() . '<br />';
				echo '异常代码：' . $e->getCode() . '<br />';
				echo '异常文件：' . $e->getFile() . '， 发生异常的行数：' . $e->getLine() . '<br />';
				echo '异常函数：' . $err_info[0]['class'] . $err_info[0]['type'] . $err_info[0]['function'] . '<br />';

				echo '<br />异常之前的路径：<br />';
				$count = count($err_info);
				echo '<table border=1><th>文件</th><th>行数</th><th>类</th><th>函数</th>';
				for ($i = $count - 1; $i > 0; $i--)
				{
					echo '<tr>';
					echo '<td>' . $err_info[$i]['file'] . '</td>';
					echo '<td>' . $err_info[$i]['line'] . '</td>';
					if (isset($err_info[$i]['class']))
					{
						echo '<td>' . $err_info[$i]['class'] . '</td>';
					}
					else
					{
						echo '<td>null</td>';
					}
					echo '<td>' . $err_info[$i]['function'] . '</td>';
				}
				echo '</table>';
			}
		}
	}